package com.openapi.common;

import com.common.utils.StringUtils;
import com.openapi.util.JWTUtils;
import com.openapi.util.StringCls;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;

@Controller
public class BaseController {
    private static final Logger log = LoggerFactory.getLogger(BaseController.class);

    @Autowired
    public HttpServletRequest request;

//    @Autowired
//    public DictionariesConfig dictionariesConfig;

//    @Reference
//    public RedisService redisService;


    public Boolean TokenIsInterface(HttpServletRequest request) throws Exception {
        // 获取 url
        String url = request.getRequestURL().toString();
        // 获取 token
        String token = request.getHeader("Authorization");
        // 非空判断
        if (!StringUtils.isNotBlank(token)) {
            return false;
        }
        if (!StringCls.isEmpty(url) && !StringCls.isEmpty(token)) {
            HashMap<String, String> map = JWTUtils.decryptToken(token);

            String type = map.get("type");
            String userUuid = map.get("userUuid");
//            String userKey = CheckUser.CHECK_REDIS_KEY + type + userUuid;

            if (!JWTUtils.WX_PRO_TYPE.equals(type)) {

                // 获取数据
//                CheckUser checkUser = JSON.parseObject((String) redisService.get(userKey), CheckUser.class);
//                if (checkUser != null) {
//                    // 不匹配直接返回 false
//                    if (!checkUser.getToken().equals(token)) {
//                        return false;
//                    }
                // 根据RedisKey 获取时效 自动刷新token
//                    Long expireTime = redisService.getExpireTime(userKey);
                // 小于 10 天就重新生成token 刷新操作
//                    if (expireTime < 864000L) {
//                        String timestamp = DateUtil.addMinute(new Date(), time).getTime() + "";
//                        String token1 = JWTUtils.getToken(userUuid, timestamp, type);
//
//                        checkUser.setToken(token1);
//                        String checkUserStr = JSON.toJSONString(CheckUser.getCheckUser());
//
//                        redisService.set(userKey, checkUserStr, CheckUser.KEY_OUT_TIME);
//                    }
//                } else {
//                    return false;
//                }
//            }

//            //验证token
//            Boolean verifyResponse = JWTUtils.verifyToken(map);
//            if (url.indexOf("/" + type + "/") != -1 && verifyResponse) {
//                // 将解析的userUuid存入消息头中
//                request.setAttribute("userUuid", userUuid);
//                return true;
//            } else if ("app2".equals(type)) {
//                // 将解析的userUuid存入消息头中
//                request.setAttribute("userUuid", userUuid);
//                return true;
//            }
                return false;
            }
            return false;
        }
        return false;
    }


}
